23

» WarCraft 3 / Карта вылетает :(

Похожие вопросы:

ответ
В этом архиве ищи свои скиллы, в [скобках] смотри нужный ID.
ответ
Я постоянно порываюсь весь вар снести и изучение джасса, которое отнимат
Посмотрел твоя карта, ужасный триггер, тройная нагрузка, и Одинаково события! поэтому мы объединение триггер и сократилось нагрузка и чуть меньше килобайт весит карт.
Я сделал полностью оптимизация ГУИ вместо джасс.
Как вам карта?
почему гуи+джасс? Потому что кто не включает UMSWE или русификатор триггеров, различные проблем.
Rare, что решает проблем?
ответ
mpq редакторы в помощь, на сайте есть Mpq мастер, RMPQ, Laddik's mpq editor - поиск в помощь ссылочка
ответ
Steal nerves:
если фаталит в игре
Никто не знает (( карта нужна
Если ошибки в триггерах, то пробуй использовать логгер jass
Если в модели, то пробуй убрать из карты по одной модели
Короче отключай и смотри/проверяй
если это при тесте мапы происходит возможно в коде
ответ
Попробуй отключить триггеры, для начала, и затем проверь, запустится ли карта в игре. Особенно те, которые были созданы/редактированы относительно недавно до появления фатала.

23

» WarCraft 3 / 1 юнит = отряд

Похожие вопросы:

ответ
Умирающий юнит, в том понятии, в каком его жуёт игра, не имеет баффов.
Вместо "Умирает" отлавливай поулчение смертельного удара (событие юнит получает урон).
Если полученный урон > оставшегося здоровья - то сделать всё то, что у тебя для умирающего
ответ
отряд организован по принципу множества
если в отряде уже есть юнит то не запись произведена не будет
ответ
А касательно остальной части, если UnitUserData нигде не используется, создаешь массив юнитов и отрядов. Массив юнитов забиваешь своими капитанами. В UnitUserData капитана пихаешь его порядковый номер в массиве. Создаешь группу юнитов для этого капитана.
  1. Добавление через каст способности.
Я бы делал через 2 разные абилки с одной и той же позицией в интерфейсе. Пока нужный тебе юнит не является частью отряда - у него таргетная абилка при касте которой на капитана он добавляется в группу соответствующего капитана и получает 2ю абилку взамен первой.
Касательно выделения этих пехотинцев - можно намутить что-то с передачей контроля или создать триггер, который будет снимать выделение с юнитов у которых есть 2я абилка. Если ты хочешь чтобы по одиночке можно было выделять пехотинцев - можешь создать переменную для каждого игрока с капитанами, куда будет просто записываться последний выбранный юнит. При снятии выделения - проверять не выбран ли этот же юнит, в случае чего не снимать выделение. Правда не уверен будет ли корректно работать :> В крайнем случае - будет работать в три клика вместо двух. Если я не ошибаюсь.
Касательно поведения этих пехотинцев - что-то реально стоящее сделать сложно. Возможно, но мне не с руки все расписывать :> Простейший вариант - приказывать пехотинцам после добавления в группу следовать за капитаном.
  1. Добавление через атаку капитана
Триггер, проверяющий что капитан получил урон или атакован, как угодно. Далее любым способом проверяешь есть ли в группе этого капитана юниты. Если нет - выбираешь всех пехотинцев N радиусе, добавляешь в отряд, заменяешь абилку/либо просто приказываешь кастануть в капитана первую абилку.
ответ
Ну только триггерные системы отрядов, была такая...
Вот пример ссылочка
Были и другие, поиск в помощь.
Вот еще ссылка
ответ
Сначало создай юнит без москиты потом его в группу дай а после чего дай маскит ему и все

23

» WarCraft 3 / В чем ошибка?

Похожие вопросы:

ответ
  1. Условие неправильное, не юнит триггера а юнит входящий в область.
  2. Сделай действие во вкладке Боевая единица - добавить способность юниту.
ответ
Раздели вейтом, конверсия требует нескольких моментов для доделки...
Долой "темный", юзай морф медведя или Иллидана
это не спасёт от потери приобретённых триггерно спеллов
ответ
Melissa:
на твоей мапе все работает о_о
вата фак....

в первой версии селектора событие выделения было только у игрока 1, как у тебя
получается, если впихнуть событий выделения на игрока больше одного, они перестают работать?
ответ
нет нельзя
юзай смерч и дамикаст
подробнее там xgm.guru/forum/showthread.php?t=615
ответ
Nero-PC, если подготовка только началась то юнита ещё нету
он появится лишь по окончанию подготовки
тебе надо смотреть не юнит а тип юнита
там есть реакция на событие - подготавливаемый тип юнита
или чтото подобное
на джасс это будет
int GetTrainedUnitType();

23

» WarCraft 3 / Иконки способностей для предметов

Похожие вопросы:

ответ
Я так и сделал, не получалось потому, что надо два заклинания делать....
Один буферизуется другой нет... Еще один вопрос по теме, что значит буферизуется\не буферизуется? И можно тему закрывать.
ответ
~8gabriel8:
mishanka122:
Если во всех картах одинаковый id, значит покопайся в хеше.
Это как, можно в личку?
Проблему решил, переделав стандартную способность, а не создавая нестандартную. Это почти что панацея от подобных случаев, когда id (ещё называют raw-code) способности меняется.

23

» WarCraft 3 / Вылетает вар.

Похожие вопросы:

ответ
Никто доподлинно не знает что Вы делали в своей карте, кроме Вас. После чего это началось? Пока могу только порекомендовать отключить все триггеры в карте — если баг пропадет, значит поочередно включайте триггеры и ищите, какой из них вызывает баг. Если не пропадет, значит причина не в триггерах.
ответ
тогда всё ясно карта не полностью скачивается
у меня работает всё
это проблема у тех кто качает карту(диск С забит,браузер тупит или ещё какая нить фигня)
решается либо уменьшением веса карты либо пусть качают через варик
ответ
Лич по тихому сидел правило баги, 1 карту запустил а вторую правил....
ответ
Походу зацикливание, триггерное перемещение предмета тоже приказ.

23

» WarCraft 3 / Игровой чат

Похожие вопросы:

ответ
Вам сюда, господин хороший. Там есть ответы, практически, на все ваши вопросы.
ответ
вот тот самый метод

23

» WarCraft 3 / Настройка Канала

Похожие вопросы:

ответ
Можно поставить юниту моментальный каст заклинания, занулив "анимация обратный ход броска, точка броска"тогда этой рамочки не будет.
Проверил уже с удалением из выбора?
ответ
Steal nerves:
Может быть он изначально скрыт? У меня тоже скрыт, нужно в настройках включить изображение
xgm.guru/p/100/190231?postid=348072#comment4 в ссылке есть текстовик, там написаны как настраивать канал, за что отвечают пункты

23

» WarCraft 3 / Замена типа брони

Похожие вопросы:

ответ
Tovio, вроде как нет. Только путем изменения стандартных/переписыванием движка варика.

23

» WarCraft 3 / Двумерные массивы

Похожие вопросы:

ответ
в джасс нету двухмерных
они есть в вджасс
можешь хоть 100 мерный но размеры массива надо заранее указывать размер массива
ответ
читаем последние комментарии, и юзаем поиск

23

» WarCraft 3 / нужна помощь с тригерром(тригерами)

Похожие вопросы:

ответ
Steal nerves:
раскрыть
При инициализации создаешь базу, есть функция генерирующее случайное число.
Забиваешь базу данных
UT[0] = пехотинец
UT[1] = бугай
UT[2] = лучница
Count = 2 это кол-во макс. типов, нумерация идёт с нуля у меня
CountU = 20 макс. возможное кол-во юнитов. Здесь можете сами указать . а вообще можно отказаться от этой переменной, проставляете сразу в цикл
Теперь как сделать рандом
set RandomCount = от 1 до CountU генерирует случайное кол-во юнитов
Цикл A от 1 до RandomCount надеюсь знаете как работает цикл? А то многие новички неизнают
-set RandomType = от 0 до Count генерируем случайный тип
-создать юнита с типом UT[RandomType]
Конец цикла
Вообще можно раскрыть BJ функцию и посмотреть как там генерируют кол-во циклом
тему то переименуйте

23

» WarCraft 3 / MemHack

Похожие вопросы:

ответ
Nelloy, я непонимаю как ты собрался делать систему сохранений без локальных файлов? Что за бред? Сейвы априори не могут быть одинаковыми у всех игроков, потому что они постоянно меняются!
Неможет у всех игроков быть одинаковый сейв, как ты собрался рассказать что ты прочитал из файла у красного игрока, если у синего нет такого файла, а у синезелёного в файле совершенно другое содержимое, это и есть локальные файлы!
Тебе так и так придется синхронизировать сейв.
Не понимаю в чем проблема? 100500 сейвов работают на preload exploit и прекрасно себя чуствуют, если вам банальный синк который разжеван в 101 месте не по зубам, сразу оставляем в покое мемхак.
ответ
Возможно "канал" так же имеет отличную от остальных абилок структуру
Рабочий вариант
function StartAbilityCD takes unit whichUnit, integer abilityId returns boolean
local integer pAbility = 0
local real cd = GetAbilityCD(abilityId, GetPlayerId(GetOwningPlayer(whichUnit))+1)
if whichUnit == null or GetUnitAbilityLevel( whichUnit, abilityId ) < 1 or cd == 0.00 then
return false
endif

set pAbility = GetUnitAbility(whichUnit, abilityId)
if pAbility < 1 then
return false
else
if RMem(pAbility+0x134)==-1 and RMem(pAbility+0x138)==-1 then
call WMem(pAbility+0x134,0)
call WMem(pAbility+0x138,0)
endif
set Memory[pReserverdIntArg1 / 4] = mR2I(cd)
call CallThisCallWith2Args( pStartAbilityCD, pAbility, pReserverdIntArg1 )
return IsAbilityOnCooldown( pAbility )
endif
return false
endfunction

23

» WarCraft 3 / Где заказать?!?

Похожие вопросы:

ответ
Armouk, во первых это не вопрос
во вторых - почему тебе должны помогать?
лично я не вижу не 1 причины чтобы делать за тебя карту
или ты бог а все вокруг твои рабы?
если ты и вправду так думаешь то тебе на сайт любителей бдсм
ответ
это Q/A
тут разрешены только вопросы
в следующий раз за заявки типа "сделайте мне что либо" пойдут варны
ответ
Поскольку его не пугает наличие большого влияния промахов на геймплей - скорее всего он делает рпг. Имхо в рпг всегда клево смотрятся тексттаги полученного урона, для создания которых необходимы триггеры на отлов получения урона. А отлавливаемый урон - можно и прохилить.
Для прохила(и вообще всех манипуляций с задержкой в 0.00 сек) лично я юзаю такие костыли:
Либа здесь только для доп табуляции. Я за чистый жасс + дефайны.
library ZeroTimeEvent

    globals
        constant integer ZTEArraySize = 64//Even 32 is alot, 64 is too much! Exactly what I need!
        timer Zero//Used for 0. sec uses
        integer ZTECurrent = 0
        unit array ZTEUnits[ZTEArraySize]
        integer array ZTEIntegers[ZTEArraySize]
        real array ZTEReals[ZTEArraySize]
        trigger array ZTETriggers[ZTEArraySize]
    endglobals
    
    function ZeroTimeEvent takes nothing returns nothing
            loop
                set  ZTECurrent = ZTECurrent - 1
                call TriggerExecute( ZTETriggers[ZTECurrent] )
                exitwhen ZTECurrent < 1
            endloop
    endfunction
    
    #define ZTEAddUnit(u) = {
        set  ZTEUnits[ZTECurrent] = u
    }
    
    #define ZTEAddInteger(i) = {
        set  ZTEIntegers[ZTECurrent] = i
    }
    
    #define ZTEAddReal(r) = {
        set  ZTEReals[ZTECurrent] = r
    }
    
    #define ConfirmZTE(trig) = {
        set  ZTETriggers[ZTECurrent] = trig
        set  ZTECurrent = ZTECurrent + 1
        call TimerStart( Zero, ZeroTime, false, function ZeroTimeEvent )
    }
    
    
    
endlibrary
Пример использования
#define UnitRemoveForceAttack(u) = {
    call UnitAddAbility( u, 'Abun' )
    call UnitRemoveAbility( u, 'Abun' )
         ZTEAddUnit(u)
         ConfirmZTE(CheckIfUnitHasA002)
}
Минус такой системы в необходимости создавать триггер для каждого блока кода, т.к. массивы блоков кода запрещены
ответ
Absorbentum, Заказ небольших триггерных или джаз систем тоже разрешен в теме заказа заклинаний а вообще-если хотите серьезно сотрудничать создайте свой блог или презентуйте проект чтобы заинтересовать людей.

23

» WarCraft 3 / Утечка или не утечка.

Похожие вопросы:

ответ
Alexander69, xgm.guru/p/wc3/optimisations
внимательно прочти то что там написано
особенно про переменные
если коротко то объект не может быть удалён из памяти пока используется (хранится в переменных/хэше/кэше)
ответ
Вот как должен выглядеть полностью правильный триггер без утечек, единственная утечка создастся только при первом использовании, это я так понял переменная группы, ее обнулять нельзя, иначе скил будет работать только раз.
ответ
передача объекта в качестве параметра не влияет на утечку. учитывается только назначение его в переменную, set var=.
ответ
создаешь объект, спрашиваешь, какой у него handle
если меньше 0x100000 - беспокоиться не о чем, он локальный и сам разрушится, если не помешаешь ссылками на него (да и то не факт, что это влияет для них). тем паче, что даже в нативке указывается, вечная или нет деформация
этот (terraindeform) - локальный, если что.

23

» WarCraft 3 / Камера

Похожие вопросы:

ответ
периодически устанавливать камеру в нужном положении\высоте
или в мемхак
ответ
~8gabriel8:
По идее тут могут быть три таких решения:
  • Задать камере bounds, чтобы обзор не выходил за рамки определённой зоны;
  • С периодичностью 0.1 секунда устанавливать обзор в положение указанной камеры;
  • Создать невидимого дамми и привязать камеру к нему.
ответ
Попробуй эту модель.
Камеру можно изменить через war3me.

23

» WarCraft 3 / Продажа предметов

Похожие вопросы:

ответ
Похоже, что никак. Смена владельца точно не помогает =)
ответ
Halian Izverg, в джнгп есть утилита
Fly называется
если не справишься с ней то пиши бд руками
500 объектов минут за 20 легко добавишь в бд
ответ
Diaboliko, у предметов с этим бага
юзай юнитов
с ними намного проще

23

» WarCraft 3 / Как делать спеллы в предметах?

Похожие вопросы:

ответ
короче пихаем сферу в спелбук и запрещаем его
у сферы безмолвие с настройками
ответ
Я сделал себе с этой карты, у меня все работает
Точно не помню какая из них, выбери ту где Келем бегаешь
ответ
о когда я сделал своего героя в нём, то в игре он почему то не используется, в редакторе выставляешь юнита на карту, но при проверке карты, его просто нет.
Ты открыл карту из редактора кампании?
Если нет - поэтому и не отображается.

23

» WarCraft 3 / Опыт

Похожие вопросы:

ответ
Порылся в игровых константах (Вкладка "Дополнительно"). Если изменить указанный пункт, можно задать часть получаемого опыта при отрыве уровня героя. Если поставить все числа 100, то всегда будет даваться полный объем опыта. Можно поставить последнее число 50, тогда при большом отрыве уровней, будет даваться только половина опыта. Как-то так. Могу ошибаться
ответ
А исправить эти его "тупые" действия никак нельзя?
переписать ai скрипты
он хранится в mpq архивах в файлах с расширением .ai
например аи для людей хранится в файле human.ai
ответ
игровые константы - опыт: общее распределение - поменяй на "нет"....
ответ
Вот выделен параметр это опыт, который дается за уничтожение юнита те параметры что выше отвечают за награду золотом за убийство.

23

» WarCraft 3 / Событие с иллюзией.

Похожие вопросы:

ответ
Ну у мастера клинка способность то посложнее...
Вот пример:
Для начала нам нужно создать иллюзии героя, а потом скрыть всех их, так же сделав визуальный эффект (если что то зеленые тени, это снаряды).

23

» WarCraft 3 / Создание информации.

Похожие вопросы:

ответ
Nirvana мод. Поищи информацию о нём. Там всё чудесно в этом плане вроде как реализовано.
ответ
читайте статьи хоть иногда
ответ
Тест карты кампании не показывает нестандартных юнитов кампании. Нужно сохранять и запускать через игру вручную, если что.
ответ
Obelick, эта либо не трогает мультибоарды
она по точкам(location) в основном работает
Obelick:
учить ради них джас и переписывать мне настолько лень
если ты нормально знаешь гуи и имеешь базовые знания по использованию гугл переводчика то переписать мультибоард на jass много времени не займёт
кроме того тебе не обязательно переписывать полностью
можно сконвертировать в код и поправить то что вызывает утечки
если ты говоришь об утечках в функции установки значения ячейки мультибоарда то их можно убрать следующим кодом
define MultiboardSetItemValueBJ(mb,col,row,val)=myMultiboardSetItemValue(mb,col,row,val)

void myMultiboardSetItemValue(multiboard mb, integer col, integer row, string val){
    multiboarditem mbitem = MultiboardGetItem(mb, row-1, col-1)
    MultiboardSetItemValue(mbitem, val)
    MultiboardReleaseItem(mbitem)
    mbitem=null
}
вставь его в шапку карты (туда где ты ALL.j подключал)
правда после этого автозаполнение строк/столбцов перестанет работать и придётся делать его циклом
ответ
Всё, разобрался, вопрос снимаю)

23

» WarCraft 3 / Как изменить размер карты.

Похожие вопросы:

ответ
BrEd Pitt:
В 'Графике' ищи. Точно не помню, вроде 'Шкала выбора'.
ответ
Закрывай с помощью Wc3 Map Optimizer
ответ
Будет на несколько сек грузится быстрее, будут меньше просадки фпс при вручении абилок если они неподгружены и так далее.
Вес упадет немного, но упадет.
ответ
Есть обычные тени - они выглядят как округлое-размытое пятно
А есть тени зданий - они являются своеобразным рисунком, размер которого не регулируется, как у варианта выше
Есть так же некая "текстура почвы", которая добавляет отрисовку на поверхности земли, стилизованную под постройки или даже под конкретную постройку (как например у ратуши и золотой шахты).
. . .
Под маленькую обсерваторию лучше использовать "тень здания" такую, которая соответствовала бы её размеру - например тень сторожевых башен орков/людей. Если нужно побольше - вариант с гнездом химеры, обелиском, и камнем воскрешения (как те что в кампании Рексара).
Касаемо текстуры земли - можно взять один из стандартных вариантов под здания альянса - каменная плитка на земле. Она есть разных размеров и подобрать что-то подходящее можно.
ответ
Графика - шкала выбора

23

» WarCraft 3 / constant function

Похожие вопросы:

ответ
нет, конвертации напрямую нет. я что-то слышал в прошлом про баг с сохранением fogmodifier в хештаблицу, но деталей не знаю, можешь проверить то направление.
ну и мемхак, на крайняк, офк.
ответ
Ой извини, уже нашел ошибку
if GetUnitAbilityLevel(WhistlePhysical_CASTER[i], c_WhistlePhysical_Buff_ID) == 0 then вот что было такой переменный оказалось в другой способности
ответ
Sergey105, нет его 1раз запускают если они с нуля а так растет каждый атак +1 потом таймер удаляет его, причиной было это
constant real time_Interval = 1/32 тут почему то трабл таймер в мега скорость идет,
поэтому поставил constant real time_Interval = 0.03 и стало норм
ответ
ScopteRectuS, у тебя где то перезаписывается bj_lastCreatedUnit
причём происходит это после первой итерации GroupEnumUnitsInRange
а вообще не стоит юзать стандартные бж переменные
т.к. они могут конфликтовать с другими системами
используй приватные переменные
если после перехода на приватные глобалки проблема останется то скопируй систему на отдельную карту и кинь эту карту сюда
буду тестить разные варианты
ответ
ScopteRectuS, ну как я и догадывался, что идет рекурсия.
10 событий - юнит получает урон, на одного юнита... Нужны именно такого типа проверки, всегда в условии триггера проверяй от кого урон и какой этот урон с помощью флага глобалки как в примере.В блоге лича хорошо описаны костыли доты, почитай для общего развития чтобы не наступать на эти грабли еще раз.

23

» WarCraft 3 / PreloadAbility( integer )

Похожие вопросы:

ответ
Nelloy, будет но для этого данные нужно синхронизировать, для ваших сейв\лоадов есть давно проверенная система, которая не требует мемхака - Data Manager, не надо никакого мемхака. Все понятно и просто, вот неужели нельзя изучить всю мат часть по сейвам прежде чем пороть горячку?
ответ
Karp:
pro100master:
Мда слышал про GetLocalPlayer() вот и будет создавать для 1 игрока в сейв
cлыщал, но если бы знал как юзать, то не спрашивал бы)
ответ
Проблема в функции SaveLoad_EncodeVerify.
ответ
ScopteRectuS, у тебя где то перезаписывается bj_lastCreatedUnit
причём происходит это после первой итерации GroupEnumUnitsInRange
а вообще не стоит юзать стандартные бж переменные
т.к. они могут конфликтовать с другими системами
используй приватные переменные
если после перехода на приватные глобалки проблема останется то скопируй систему на отдельную карту и кинь эту карту сюда
буду тестить разные варианты